//#include<iostream>
//using namespace std;
//#include<vector>
//#include<algorithm>
//int main()
//{
//	int n;
//	cin >> n;
//	vector<int> v;
//	int i = 0;
//	for (i; i < n; i++)
//	{
//		int x;
//		cin >> x;
//		v.push_back(x);
//	}
//	sort(v.begin(), v.end());
//	 i = 0;
//	int sum = 0;
//	for (i; i < n - 1; i++)
//	{
//		if (v[i + 1] - v[i] == 1)
//			sum++;
//	}
//	cout << sum;
//}
//#include<set>
//#include<utility>
//#include<iostream>
//using namespace std;
//int main()
//{
//	int n;
//	cin >> n;
//	set<pair<int,int>> m;
//	int i = 0;
//	for (i; i < n; i++)
//	{
//		int x1, y1, x2, y2;
//		cin >> x1 >> y1 >> x2 >> y2;
//		int k = x1;
//		for (k; k < x2; k++)
//		{
//			int j = y1;
//			for (j; j < y2; j++)
//			{
//				m.insert(pair<int, int>(k, j));
//			}
//		}
//	}
//	cout << m.size();
//}
#include<iostream>
#include<string>
using namespace std;
int main()
{
	string s;
	cin >> s;
	int k, n;
	cin >> k >> n;
	if (k == 0)
	{
		int i = 0;
		for (i = 0; i < s.size(); i++)
		{
			s[i] = tolower(s[i]);
		}
	}
	while (n--)
	{
		string ss;
		cin >> ss;
		string s2 = ss;

		if (k == 0)
		{
			int i = 0;
			for (i = 0; i < s2.size(); i++)
			{
				s2[i] = tolower(s2[i]);
			}
		}
		if (s2.find(s) != string::npos)
			cout << ss << endl;
	}
}